/* ------------------------2021-08-26 封装uni-app请求----------------------------- */
import config from './config.js'

const requestUrl = async (params, method) => {
	let token = uni.getStorageSync('token') || ''
	return new Promise((resolve, reject) => {
		// 根据具体业务需求更改必要参数
		if (!config.baseUrl) {
			// console.log('config.js 中参数配置不全')
			reject('config.js 中参数配置不全')
			return
		}

		uni.request({
			url: config.baseUrl + params.url,
			data: params.data,
			method: method,
			header: {
				'Authorization': token,
				'Content-Type': 'application/json;charset=UTF-8',
				...params.header
			},
			timeout: config.reqTimeOut,
			success(res) {
				// 成功回调
				if (res.statusCode === 200) {
					if (res.data.data !== null && res.data.data.hasOwnProperty('token')) {
						uni.setStorageSync('token', res.data.data.token)
					}
					resolve(res.data)
				} else if (res.statusCode === 401) {
					// 代表token过期
					uni.clearStorageSync() // 清空本地所有的缓存数据
					uni.reLaunch({
						url: '/pages/loginRegister/login/Login'
					})
				} else {
					let params = {
						code: 500,
						success: false
					}
					resolve(params)
					uni.showModal({
						title: '温馨提示',
						content: '网络请求超时，请稍后再试！',
						confirmColor: '#3178FF',
						showCancel: false, // 是否显示取消按钮
						success: function(res) {
							if (res.confirm) {
								throw new Error('')
							}
						}
					})
				}
			},
			fail() {
				let params = {
					code: 500,
					success: false
				}
				resolve(params)
				uni.showModal({
					title: '温馨提示',
					content: '网络请求超时，请稍后再试！',
					confirmColor: '#3178FF',
					showCancel: false, // 是否显示取消按钮
					success: function(res) {
						if (res.confirm) {
							throw new Error('')
							// uni.clearStorageSync() // 清空本地所有的缓存数据
							// uni.reLaunch({
							// 	url: '/pages/loginRegister/login/Login'
							// })
						}
					}
				})
			},
			complete() {
				// 无论成功或失败 只要请求完成的 回调
				// console.log('complete------------', e);
			}
		})
	})
};

export default {
	async get(params) {
		return await requestUrl(params, 'GET')
	},
	async post(params) {
		return await requestUrl(params, 'POST')
	}
}